/*-------------------------------------------------------------------------
 *
 * buf.h
 *	  基本缓冲区管理器数据类型。
 *
 *
 * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/storage/buf.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef BUF_H
#define BUF_H

/*
 * 缓冲区标识符。
 *
 * 零是无效的，正数是共享缓冲区的索引（1..NBuffers），
 * 负数是本地缓冲区的索引（-1 .. -NLocBuffer）。
 */
typedef int Buffer;

#define InvalidBuffer	0

/*
 * BufferIsInvalid
 *		True当且仅当缓冲区无效。
 */
#define BufferIsInvalid(buffer) ((buffer) == InvalidBuffer)

/*
 * BufferIsLocal
 *		True当且仅当缓冲区是本地的（对其他后端不可见）。
 */
#define BufferIsLocal(buffer)	((buffer) < 0)

/*
 * 缓冲区访问策略对象。
 *
 * BufferAccessStrategyData对freelist.c是私有的。
 */
typedef struct BufferAccessStrategyData *BufferAccessStrategy;

#endif							/* BUF_H */
